'''
登录：
地址：http://kdtx-test.itheima.net/api/login
方法：Post
请求数据：
请求头：Content-Type: application/json
请求体：{"username": "admin", "password": " admin123","code":"2", "uuid":"验证码接口返回数据"}
'''
from api.login import LoginAPI
# 创建测试类
class TestLoginAPI:
    # 定义一个全局变量
    uid = None # （初始值为空：None）
    # 前置操作
    def setup_method(self):
        # 将第一步导入进来的接口类（Login API）实例化为一个对象
        self.login_api = LoginAPI()
        # 将验证码接口返回的uuid提取出来
        resp = self.login_api.get_verify_code() # 通过上一步实例化的对象，
        # 调用验证码方法。拿到验证码接口的整个响应结果，并且保存到一个变量中resp
        TestLoginAPI.uid = resp.json().get("uuid")
    # 后置操作
    def teardown_method(self):
        pass
    # 编写测试用例
    # 1、登录成功
    def test01_success(self):
        login_data = {"username":"admin","password":"HM_2023_test",
                      "code":"2","uuid":TestLoginAPI.uid}
        resp = self.login_api.login(test_data=login_data)
        #添加断言
        #1、响应状态码（断言状态码是否为200）
        assert 200 == resp.status_code
        #2、msg:操作成功(断言响应数据中是否包含成功)
        assert "成功" in resp.text
        #3、code=200（断言响应数据中code值是否为200）
        assert 200 == resp.json().get("code")
    # 2、登录失败（用户名为空）
    def test02_without_username(self):
        def test01_success(self):
            login_data = {"username": "", "password": "HM_2023_test",
                          "code": "2", "uuid": TestLoginAPI.uid}
            resp = self.login_api.login(test_data=login_data)
            # 添加断言
            # 1、响应状态码（断言状态码是否为200）
            assert 200 == resp.status_code
            # 2、msg:操作成功(断言响应数据中是否包含成功)
            assert "不存在" in resp.text
            # 3、code=200（断言响应数据中code值是否为200）
            assert 500 == resp.json().get("code")
    # 3、登录失败（未注册成功）
    def test03_username_not_exist(self):
        def test01_success(self):
            login_data = {"username": "admin01", "password": "HM_2023_test",
                          "code": "2", "uuid": TestLoginAPI.uid}
            resp = self.login_api.login(test_data=login_data)
            # 添加断言
            # 1、响应状态码（断言状态码是否为200）
            assert 200 == resp.status_code
            # 2、msg:操作成功(断言响应数据中是否包含成功)
            assert "不成功" in resp.text
            # 3、code=200（断言响应数据中code值是否为200）
            assert 500 == resp.json().get("code")